package com.laoxiang.modules.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.laoxiang.modules.system.entity.SysDept;
import com.laoxiang.modules.system.entity.vo.DeptTreeVO;

import java.util.List;


/**
 * 部门信息表(SysDept)表服务接口
 *
 * @author db
 * @since 2023-09-03 22:33:48
 */
public interface SysDeptService extends IService<SysDept> {

    /**
     * 通过查询条件获得部门列表
     * @param sysDept
     * @return
     */
    List<SysDept> getDeptList(SysDept sysDept);

    /**
     * 获得部门树（部门只包含id、pid、DeptName、children）,用于前端增加部门时部门树
     * @return
     */
    List<DeptTreeVO> getDeptTreeSelect();

    /**
     * 增加部门
     * @param sysDept
     * @return
     */
    int addDept(SysDept sysDept);

    /**
     * 通过部门id获得部门信息
     * @param deptId
     * @return
     */
    SysDept getSysDeptById(Long deptId);

    /**
     * 检查部门名称是否唯一
     * @param sysDept
     * @return
     */
    boolean checkDeptNameUnique(SysDept sysDept);

    /**
     * 修改部门信息
     * @param sysDept
     */
    void updateDept(SysDept sysDept);

    /**
     * 删除部门
     * @param deptId
     */
    void deleteDeptById(Long deptId);

    /**
     * 查询部门是否存在用户
     * @param deptId
     * @return
     */
    boolean checkDeptExistUser(Long deptId);

    /**
     * 是否存在部门子节点
     * @param deptId
     * @return
     */
    boolean hasChildByDeptId(Long deptId);
}


